﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FluentValidation;
using FluentValidation.Results;
using STLGROUP.Layers.Common;


namespace STLGROUP.Layers.DataAccessLayers.Validators
{
    public class CustomerValidator : AbstractValidator<DT_KhachHang>
    {
        public CustomerValidator()
        {
            //RuleFor(customer => customer.MaKhachHang).NotEmpty().WithMessage(Const.VALD_PROPERTY_KHONG_BO_TRONG).WithPropertyName("Mã khách hàng");
           // RuleFor(s => s.MaKhachHang).Must(ExistedMaKH).When(s => !string.IsNullOrEmpty(s.MaKhachHang)).WithPropertyName("Mã khách hàng").WithMessage(Const.VALD_DA_TON_TAI);

            RuleFor(customer => customer.HoDem).NotNull().WithMessage(Const.VALD_PROPERTY_KHONG_BO_TRONG).WithPropertyName("Họ đệm");
            RuleFor(customer => customer.Ten).NotNull().WithMessage(Const.VALD_PROPERTY_KHONG_BO_TRONG).WithPropertyName("Tên");

            RuleFor(customer => customer.SoDienThoai).NotNull().WithMessage(Const.VALD_PROPERTY_KHONG_BO_TRONG).WithPropertyName("Số điện thoại");
            RuleFor(s => s.SoDienThoai).Must(isNumber).When(s=>!string.IsNullOrEmpty(s.SoDienThoai)).WithPropertyName("Số điện thoại").WithMessage(Const.VALD_PHAI_LA_CHU_SO);
            RuleFor(customer => customer.Email).EmailAddress().WithMessage(Const.VALD_KHONG_HOP_LE).WithPropertyName("Email");
        }

        /// <summary>
        /// check is number
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        private bool isNumber(string str)
        {
            str = str.Trim();
            Double a;
            return Double.TryParse(str, out a);
        }

        private bool ExistedMaKH(string pMaKH)
        {
            DT_KhachHang kh = Cache.Context.DT_KhachHang.Where(s => s.MaKhachHang == pMaKH).FirstOrDefault();

            return kh != null ? false : true;
        }
    }

 
}
